package net.qiqbframework.common.dto;

import java.io.Serializable;

/**
 * 分页参数
 */
public class PageParamDto implements Serializable {

    public static final int DEFAULT_PAGE_SIZE = 20;

    /**
     * 页码，1表示第一页
     */
    private long pageNumber;

    /**
     * 每页结果数
     */
    private int pageSize;


    public static PageParamDto of(long pageNumber, int pageSize) {
        return new PageParamDto(pageNumber, pageSize);
    }

    // ---------------------------------------------------------- Constructor start

    /**
     * 构造，默认第0页，每页{@value #DEFAULT_PAGE_SIZE} 条
     *
     */
    public PageParamDto() {
        this(1, DEFAULT_PAGE_SIZE);
    }

    /**
     * 构造
     *
     * @param pageNumber 页码，0表示第一页
     * @param pageSize   每页结果数
     */
    public PageParamDto(long pageNumber, int pageSize) {
        this.pageNumber = Math.max(pageNumber, 1);
        this.pageSize = pageSize <= 0 ? DEFAULT_PAGE_SIZE : pageSize;
    }

    /**
     * @return 页码，1表示第一页
     */
    public long getPageNumber() {
        return pageNumber;
    }

    /**
     * 设置页码，1表示第一页
     *
     * @param pageNumber 页码
     */
    public void setPageNumber(int pageNumber) {
        this.pageNumber = Math.max(pageNumber, 1);
    }

    /**
     * @return 每页结果数
     */
    public int getPageSize() {
        return pageSize;
    }

    /**
     * 设置每页结果数
     *
     * @param pageSize 每页结果数
     */
    public void setPageSize(int pageSize) {
        this.pageSize = (pageSize <= 0) ? DEFAULT_PAGE_SIZE : pageSize;
    }

}